package com.spring.component.framework.dao.intercepter;

import java.util.stream.Stream;

/**
 * 数据库方言
 * 
 * @author liushihua
 * @since 2018年05月12日
 */
public abstract class Dialect {

  public static enum Type {
    MYSQL, ORACLE, POSTGRESQL, H2;

    /**
     * 判断是否支持数据库类型
     *
     * @param dbType
     * @return
     */
    public static boolean supportingDatabaseType(String dbType) {
      return Stream.of(Type.values())
          .anyMatch(type -> type.toString().equals(dbType.toUpperCase()));
    }

  }

  /**
   * 为sql加上limit和offset
   * 
   * @param sql
   * @param skipResults
   * @param maxResults
   * @return
   */
  public abstract String getLimitSqlString(String sql, int skipResults, int maxResults);

  public abstract String getCountSqlString(String sql);
}
